package wikiPhilia_two;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

import processing.core.PApplet;

/* code from Ben Fry's Visualizing Data;
 * 
 */


public class TsvTableHuge {
		  PApplet parent;
		  int rowCount;
		  BigFile bf;
		  String filename;
		  Iterator<String> itr;
		  ArrayList<String[]> data = new ArrayList<String[]>();;
		 public TsvTableHuge(PApplet parent, String filename) {
			 this.parent =parent;
			 this.filename = filename;
		    try {
		    	bf = new BigFile(filename);	
			} catch (Exception e) {
				// TODO: handle exception
			}
			itr = bf.iterator();
			rowCount = 0;
			while(itr.hasNext()) {
				String[] words =parent.split(itr.next(),"\t"); 
			  data.add(words);
			  rowCount++;
			}
			bf.Close();
			
		}
		  
		  
		  public int getRowCount() {
		    return rowCount;
		  }
		  
		  
//		  // find a row by its name, returns -1 if no row found
//		  public int getRowIndex(String name) {
//		    for (int i = 0; i < rowCount; i++) {
//		      if (data[i][0].equals(name)) {
//		        return i;
//		      }
//		    }
//		    System.out.println("No row named '" + name + "' was found");
//		    return -1;
//		  }
		  
		  
//		  public String getRowName(int row) {
//		    return getString(row, 0);
//		  }


		  public String getString(int rowIndex, int column) {
			  
//			int i = 0;
//			String result = "";
//			int j = litr.nextIndex();
//			System.out.println("current position: " + j);
//		    while(litr.hasNext() ) {
//		    	if (rowIndex == i) result = litr.next();
//		    	 i++;
//		    }
//		    bf.Close();
//		    //System.out.println(i + " : " + rowIndex);
//		    //System.out.println(result);
//		    String[] words = parent.split(result,"\t");
//		    try {
//		    	return words[column];	
//			} catch (Exception e) {
//				// TODO: handle exception
//				return "";
//			}
			  try {
				return data.get(rowIndex)[column];
			} catch (Exception e) {
				// TODO: handle exception
				return null;
			}
		  }
		  
//		  public String[] getRowToStringArray(int rowIndex) {
//				Iterator itr = bf.iterator();
//				String result = null;
//				int i = 0;
//			    while(itr.hasNext()) {
//			    	if (rowIndex == i) {
//			    		result = (String)itr.next();
//			    	}
//			    	i++;
//			    }
//			    System.out.println(result);
//			    String[] words = parent.split(result,"\t");
//			    return words;
//		  }

		  
		  
//		  public String getString(String rowName, int column) {
//		    return getString(getRowIndex(rowName), column);
//		  }

		  
//		  public int getInt(String rowName, int column) {
//		    return parent.parseInt(getString(rowName, column));
//		  }
//
//		  
//		  public int getInt(int rowIndex, int column) {
//		    return parent.parseInt(getString(rowIndex, column));
//		  }
//
//		  
//		  public float getFloat(String rowName, int column) {
//		    return parent.parseFloat(getString(rowName, column));
//		  }
//
//		  
//		  public float getFloat(int rowIndex, int column) {
//		    return parent.parseFloat(getString(rowIndex, column));
//		  }
//		  
//		  
//		  public void setRowName(int row, String what) {
//		    data[row][0] = what;
//		  }
//
//
//		  public void setString(int rowIndex, int column, String what) {
//		    data[rowIndex][column] = what;
//		  }
//
//		  
//		  public void setString(String rowName, int column, String what) {
//		    int rowIndex = getRowIndex(rowName);
//		    data[rowIndex][column] = what;
//		  }
//
//		  
//		  public void setInt(int rowIndex, int column, int what) {
//		    data[rowIndex][column] = parent.str(what);
//		  }
//
//		  
//		  public void setInt(String rowName, int column, int what) {
//		    int rowIndex = getRowIndex(rowName);
//		    data[rowIndex][column] = parent.str(what);
//		  }
//
//		  
//		  public void setFloat(int rowIndex, int column, float what) {
//		    data[rowIndex][column] = parent.str(what);
//		  }
//
//
//		  public void setFloat(String rowName, int column, float what) {
//		    int rowIndex = getRowIndex(rowName);
//		    data[rowIndex][column] = parent.str(what);
//		  }
		}
